【发布时间】:2020-11-16 16:42:00
【问题描述】:
我希望 2 个函数一起运行,但是首先应该运行 func1() 并且 func1() 应该调用 func2() 然后两个函数应该同时运行,直到满足所有条件。 这是虚拟代码
x=1
def func1():
global x
while x>0:
a=input()
do something
func2() #calling func2() only once
def func2():
global x
while 1:
if x==5:
x=0 #x become 0 so now while loop for func1 should end
break
x+=1
这是我尝试使用多处理运行的代码。
import datetime
from time import sleep
from threading import *
from multiprocessing import Process
import sys
bot_reply_time = 0
x = 1
def func1():
y = 0
global bot_reply_time
while x > 0:
a = input("Q>") #EOF error here when reading a line
print("Bot replay: Hi")
c = datetime.datetime.now()
bot_reply_time = (c.hour * 60 * 60) + (c.minute * 60) + c.second
if y == 0:
y += 1
p2 = Process(target=func2) #calling func2 only once
p2.start()
def func2():
global x
global bot_reply_time
while True:
last_bot_reply_time = bot_reply_time
c = datetime.datetime.now()
current_time = (c.hour * 60 * 60) + (c.minute * 60) + c.second
if (bot_reply_time + 10 == current_time and bot_reply_time == last_bot_reply_time):
x = 0 #x become 0 so now while loop for func1 should end
print("session expired")
break
if __name__=='__main__':
p1 = Process(target = func1)
p1.start()
但是我收到错误为“读取一行时 EOF”。如果我删除“input()”,我不会收到错误
【问题讨论】:
-
我认为您的意思是“空闲”而不是理想..
-
您遇到的错误是什么?如果我们不知道您遇到的问题,我们真的无法提供帮助。
-
我收到 EOFError 错误:读取一行时出现 EOF
-
是的,大卫。纠正我的坦克
-
使用像这样的全局共享变量不是线程安全的。请改用locks。
标签: python python-3.x