New submission from Cyker Way <cyker...@gmail.com>:

I'm currently writing some shell tools with python3. While python can 
definitely do the job succinctly, there is one problem which made me feel I 
might have to switch to other languages or even pure bash scripts: python 
startup time.

Shell tools are used very often, interactively. users do feel the lag when they 
hit enter after their command. i did 2 implementations in both python and pure 
bash, python takes about 500ms to run while bash is more than 10 times faster.

I'm not saying bash is better than python, but for this task bash, or even 
perl, is a better choice. however, i think there is an easy way to improve 
python as i believe the lag is mostly due to its slow startup: pre-warm its vm. 

I can think of 2 scenarios for python to do a better shell job:

1.  Run a universal python as a daemon, which reads scripts from a socket, runs 
it, and returns the result to a socket. Because it's running as a daemon, the 
startup time is avoided each time user runs a script.

2.  Warm a python zygote during system boot. Every time a python script is run, 
fork from the zygote instead of cold-boot the vm. this is a similar approach to 
android zygote.

I haven't done experiments to see whether there will be obstacles in 
implementing these scenarios. But I think this should become a priority because 
it's real and tangible, and other people may face the slow startup problem as 
well. If there's ongoing work on these, I'd be happy to have a look. But I 
don't think these scenarios have already been put into released versions of 
python.

----------
components: Interpreter Core
messages: 322800
nosy: cykerway
priority: normal
severity: normal
status: open
title: Speed up python startup by pre-warming the vm
type: enhancement
versions: Python 3.6, Python 3.7, Python 3.8

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue34296>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to