相关疑难解决方法(0)

有没有办法杀死一个线程?

是否可以在不设置/检查任何标志/信号量/等的情况下终止正在运行的线程?

python multithreading kill terminate

710
推荐指数
16
解决办法
71万
查看次数

使用列表推导仅仅是副作用是Pythonic吗?

想想我正在调用它的副作用的函数,而不是返回值(比如打印到屏幕,更新GUI,打印到文件等).

def fun_with_side_effects(x):
    ...side effects...
    return y
Run Code Online (Sandbox Code Playgroud)

现在,是Pythonic使用列表推导来调用这个函数:

[fun_with_side_effects(x) for x in y if (...conditions...)]
Run Code Online (Sandbox Code Playgroud)

请注意,我不会将列表保存在任何位置

或者我应该像这样调用这个函数:

for x in y:
    if (...conditions...):
        fun_with_side_effects(x)
Run Code Online (Sandbox Code Playgroud)

哪个更好?为什么?

python list-comprehension

97
推荐指数
4
解决办法
8534
查看次数

如果你不指定它,那么(高效)列表理解是多少?

在这个问题上,我和一位辩论者提出了争论

for t in threads:
    t.join()
Run Code Online (Sandbox Code Playgroud)

会好过的

[t.join() for t in threads]
Run Code Online (Sandbox Code Playgroud)

抛开"滥用理解"的问题 - 我倾向于同意,但我想要这样一个单行:如何(in-)效率是我的版本(第二个)真的吗?Python总是/在我的情况下实现列表推导还是在内部使用生成器?

map(lambda t: t.join(), threads)更高效吗?或者是否有另一种方法将函数应用于列表中的每个元素threads

python performance list-comprehension

5
推荐指数
1
解决办法
1310
查看次数

什么是什么都不做的pythonic方式是什么?

我需要我的主程序在某个时候什么都不做 - 永远(有些线程更早开始做一些工作)。

我想知道这样做的pythonic方法是什么。我特别想避免在这种虚无上丢失 CPU 周期。

我的直接猜测是time.sleep(100000)哪里100000足够大,适合我的程序的生命周期。它有效,但在美学上并不令人愉快。我检查了运行这个的 python 会话的 CPU 负载:不可测量(接近于零)。

我也试过

while True:
    pass
Run Code Online (Sandbox Code Playgroud)

它看起来更好,但对 CPU 的影响是巨大的(~25%)。

有没有一种——最好只有一种——明显的方法来做到这一点

python

0
推荐指数
1
解决办法
227
查看次数