2015-08-12 2 views
-3

У меня есть две функции, но я не могу заставить их работать все время с помощью функции foo(), которая спит в течение некоторого времени.Выполнять две функции python одновременно со сном

import time 

filename = "test.dat" 

def foo(): 
    print "It deletes dat file and creates a new one" 
    time.sleep(xxx) 

def bar(): 
    print "Writes to dat file" 

while True: 
    foo() 
    bar() 
+5

Посмотрите резьб – muddyfish

ответ

0

Здесь есть была проблема: filename определяется как globa против и, как только foo() удалит этот файл и создаст новый, filename теперь является локальной переменной, поэтому функция bar() не может найти файл dat, и поэтому он не запускается вообще. Спасибо всем за вашу поддержку и время.

0

Я не уверен, что я правильно понял проблему, но попробуйте это и дайте мне знать, если это то, что вы хотите

import time 
from multiprocessing import Process 

def foo(x): 
    while True: 
     print ("It deletes dat file and creates new one") 
     time.sleep(x) 

def bar(): 
    while True: 
     print ("Wtires to dat file") 

process1 = Process(target=foo, args=(0.05,)) 
process2 = Process(target=bar) 
process1.start() 
process2.start() 

с этим кодом foo() будет работать с x = 0.05 секунд перерыва и bar() будет работать все время ... но обратите внимание, что «все время» означает veeeeery часто и без перерывов :)

+0

Я получаю эту ошибку: | Неверный синтаксис»и пометил p1 p1.start() –

+0

вы можете показать полный журнал Там нет' p1 p1.start() '.?. string в моем коде – Andersson

+0

У вас была синтаксическая ошибка: process1 = Process (target = foo, args = (0.05,) вместо: process1 = Process (target = foo, args = (0.05)) Но в любом случае foo () функция не запускается вообще –

Смежные вопросы