Writing a Python extension in Go (Golang)

2024/11/20 12:23:54

I currently use Cython to link C and Python, and get speedup in slow bits of python code. However, I'd like to use goroutines to implement a really slow (and very parallelizable) bit of code, but it must be callable from python. (I've already seen this question)

I'm (sort of) happy to go via C (or Cython) to set up data structures etc if necessary, but avoiding this extra layer would be good from a bug fix/avoidance point of view.

What is the simplest way to do this without having to reinvent any wheels?

Answer

Update 2015: possible as of Go 1.5 https://blog.filippo.io/building-python-modules-with-go-1-5/

with Go 1.5 you can build .so objects and import them as Python modules, running Go code (instead of C) directly from Python.

See also https://github.com/go-python/gopy

gopy generates a CPython extension module from a go package.

https://en.xdnf.cn/q/26320.html

Related Q&A

Non-global middleware in Django

In Django there is a settings file that defines the middleware to be run on each request. This middleware setting is global. Is there a way to specify a set of middleware on a per-view basis? I wan…

I want to replace single quotes with double quotes in a list

So I am making a program that takes a text file, breaks it into words, then writes the list to a new text file.The issue I am having is I need the strings in the list to be with double quotes not singl…

How can I get stub files for `matplotlib`, `numpy`, `scipy`, `pandas`, etc.?

I know that the stub files for built-in Python library for type checking and static analysis come with mypy or PyCharm installation. How can I get stub files for matplotlib, numpy, scipy, pandas, etc.?…

Pipfile.lock out of date

Im trying to deploy a large django project to heroku. I installed Heroku CLI, logged in, created an app and ran:git push heroku masterI have a Pipfile and requirements.txt already set up. I added a run…

Can a simple difference in Python3 variable names alter the way code runs? [duplicate]

This question already has answers here:Python attributeError on __del__(2 answers)Closed 9 years ago.This code...class Person:num_of_people = 0def __init__(self, name):self.name = namePerson.num_of_peo…

Easy way to check that a variable is defined in python? [duplicate]

This question already has answers here:How do I check if a variable exists?(15 answers)Closed 10 years ago.Is there any way to check if a variable (class member or standalone) with specified name is d…

Adding install_requires to setup.py when making a python package

To make a python package, in setup.py, I have the following: setup(name=TowelStuff,version=0.1.0,author=J. Random Hacker,author_email=[email protected],packages=[towelstuff, towelstuff.test],scripts=[b…

pyqt: how to remove a widget?

I have a QGroupBox widget with children in it that I want to remove. How do I do that? I cant find any removeWidget, removeChild, removeItem, or anything similar in the docs. I can only see how to rem…

ValueError: cannot switch from manual field specification to automatic field numbering

The class:class Book(object):def __init__(self, title, author):self.title = titleself.author = authordef get_entry(self):return "{0} by {1} on {}".format(self.title, self.author, self.press)C…

Retrieve name of column from its Index in Pandas

I have a pandas dataframe and a numpy array of values of that dataframe. I have the index of a specific column and I already have the row index of an important value. Now I need to get the column name …