1
dobelee 2018-02-09 00:09:41 +08:00 via Android 1
都還沒學多線程,就想著用多線程還是多進程,我只能說:你想多了。
|
2
coffeSlider 2018-02-09 00:13:20 +08:00 via Android
你的问题好混乱啊,Python 的话,优先选择多进程吧。
|
3
powergx 2018-02-09 00:22:28 +08:00 via iPhone 1
如果是要利用 cpu,的所有资源,可用多进程。 看延迟用在哪里了 ,如果是网络 /io 之类的 gevent 就能帮助你。 先学习学习
|
4
heeroz 2018-02-09 01:18:15 +08:00 1
python 无论多线程还是多进程性能都很麻烦绕圈子或者性能低,还不如换个语言写让 python 调用
|
5
snnn 2018-02-09 04:09:35 +08:00 via Android
Python 的话,优先选择多进程吧
|
6
innoink 2018-02-09 06:34:26 +08:00 1
python 一般会有 GIL,如果是 io 多的多线程也可以,一般是多进程
|
7
wisej 2018-02-09 07:32:37 +08:00 via Android 1
1. 题目描述有问题,啥叫单线程多个进程?我的理解就是:用多线程还是多进程
2. 你启动多进程的方法…不方便而且不太好。应该使用标准库 mutilprocess 3. 这两个方法优劣。很简单,你两个方法都写出来,做个测试不就好了。重效率,你就比较执行时间。 一些拙见:数据库操作属于 io 任务。所以多线程是可以的。不过你得注意,如果你是一个线程一个连接,最好有连接池;如果共享一个连接,那你得加锁,同时创建连接的时候把 check_same_thread 设为 False |
9
goofool 2018-02-09 08:27:03 +08:00 via Android 1
解决问题有简单的方法就用简单的,我觉得多运行几个 python 能解决就挺好。如果是学习的话,可以研究研究
|
10
KKKKKK 2018-02-09 09:29:23 +08:00 via Android
异步算了
|
11
LokiSharp 2018-02-09 09:42:23 +08:00 via iPhone
看你在不在意性能,不在意的话无所谓,也没必要
|
12
ChenJinluo OP @wisej 我没说清-。- 意思就是一个进程只有一个线程,开多个进程
|
13
forcecharlie 2018-02-09 10:16:29 +08:00 1
进程面临的问题,进程间通信,同步,创建代价稍高。线程面临问题,数据竞争,多线程的各种坑,还有 GIL。
实际上在 Linux 系统上,线程就是个特殊的进程,和父进程共享数据空间,getpid 返回主线程的 tid,主线程的 tid 就是其 pid,使用 syscall(SYS_GETTID) 就可以知道 。fork pthread_create 一般都是使用 syscall SYS_CLONE. |
14
lovedebug 2018-02-09 10:19:48 +08:00 1
以数据库的并发能力,你的需求一个线程或进程就够了 - - ,弄什么多线程多进程。。。
|
15
lovedebug 2018-02-09 10:22:24 +08:00
补充一下用简单的 ORM 甚至简单的 jdbc 类似的库就够了。 上框架之前先看自己需求以及当前的服务并发处理能力,自己估算一下。 当然如果是学习,什么框架都可以了🤪
|
16
SummerWQM 2018-02-09 10:37:58 +08:00
我觉着 可以用用 GO
|
17
owenliang 2018-02-09 13:40:50 +08:00 1
python 是推崇多进程的,毕竟多线程有 GIL 锁。因此 python 也提供了很多跨进程通讯的数据结构,基本可以满足跨进程传输需求。
用 python 就不要太考虑并发能力了。 |
18
hl 2018-02-09 14:04:21 +08:00
看场景啊
|
19
vimiix 2018-02-09 14:45:00 +08:00 1
要用什么方法,主要还是以需求为导向的。
我觉得如果是简单的多任务并发,协程应该是最好的选择。 |
20
myyou 2018-02-09 15:08:47 +08:00 1
python 线程在 cpu 计算类型没用,在 io 计算是有用的。如果是操作数据库,建议多线程
|
21
qkcccc 2018-02-10 10:02:54 +08:00 1
操作数据库是网络 io 密集型,建议用协程
|