python executable_python-与PyInstaller-executable陷入循环的进程

探讨在Python多进程中实现用户输入的挑战,特别是在Windows环境下通过PyInstaller打包后的程序表现异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python v3.5,Windows 10

我正在使用多个进程,并试图捕获用户输入.搜索所有内容,发现在多个进程中使用input()时会发生奇怪的事情.经过8个小时的尝试,我没有实施任何措施,我很确定自己做错了,但是我一生无法解决.

以下是一个精简的程序,演示了该问题.现在,当我在PyCharm中运行此程序时,它可以正常工作,但是当我使用pyinstaller创建单个可执行文件时,它将失败.程序不断陷入循环,要求用户输入如下所示的内容:.

我很确定这与Windows如何从我已阅读的内容中获取标准输入有关.我也尝试过将用户输入变量作为Queue()项传递给函数,但存在相同的问题.我读到您应该将input()放在主要的python进程中,所以我在__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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值