python 3.5版,Windows 10
我正在使用多个进程并尝试捕获用户输入。搜索我看到的所有东西使用时会发生奇怪的事情
input()
具有多个进程。经过8个多小时的尝试,我的工具都没用,我肯定我做错了,但我一辈子都搞不清楚。
下面是一个非常简单的程序,演示了这个问题。现在,当我在pycharm中运行这个程序时,它可以正常工作,但是当我使用
pyinstaller
要创建单个可执行文件,它将失败。程序始终卡在一个循环中,要求用户输入如下所示的内容:
.
我非常肯定这与Windows如何从我读过的东西中接收标准输入有关。我还尝试将用户输入变量作为
Queue()
项到函数,但相同的问题。我看你应该放
输入()
在主python进程中,所以我在
if __name__ = '__main__':
from multiprocessing import Process
import time
def func_1(duration_1):
while duration_1 >= 0:
time.sleep(1)
print('Duration_1: %d %s' % (duration_1, 's'))
duration_1 -= 1
def func_2(duration_2):
while duration_2 >= 0:
time.sleep(1)
print('Duration_2: %d %s' % (duration_2, 's'))
duration_2 -= 1
if __name__ == '__main__':
# func_1 user input
while True:
duration_1 = input('Enter a positive integer.')
if duration_1.isdigit():
duration_1 = int(duration_1)
break
else:
print('**Only positive integers accepted**')
continue
# func_2 user input
while True:
duration_2 = input('Enter a positive integer.')
if duration_2.isdigit():
duration_2 = int(duration_2)
break
else:
print('**Only positive integers accepted**')
continue
p1 = Process(target=func_1, args=(duration_1,))
p2 = Process(target=func_2, args=(duration_2,))
p1.start()
p2.start()
p1.join()
p2.join()